"""
测试运行时长装饰器模块

该模块提供了用于测量函数执行时间的装饰器。通过使用这些装饰器，可以轻松地在微秒或毫秒级别上测量任何函数的运行时间。

模块包含以下装饰器：
- us_timer: 以微秒为单位测量函数执行时间。
- ms_timer: 以毫秒为单位测量函数执行时间。

示例用法：
@us_timer
def example_function(str1, str2):
    print(str1)
    print(str2)

string1 = "hello"
string2 = "world"
example_function(string1, string2)

作者: XSP
创建日期: 2025年4月5日
版本: 1.0.0
"""

import utime

def _measure_time(func, time_unit='us'):
    def wrapper(*args, **kwargs):
        start_time = utime.ticks_us()
        result = func(*args, **kwargs)  # Capture the function's return value
        end_time = utime.ticks_us()
        elapsed_time = end_time - start_time
        if time_unit == 'ms':
            elapsed_time /= 1000
        print(f"{func.__name__} run time is {elapsed_time:.2f} {time_unit}")
        return result  # Return the original function's result
    return wrapper

def measure_ustime(func):
    return _measure_time(func, 'us')

def measure_mstime(func):
    return _measure_time(func, 'ms')

if __name__ == "__main__":
    from measure_time import *
    @measure_ustime
    def example_function(str1, str2):
        print(str1)
        print(str2)
    
    string1 = "hello"
    string2 = "world"
    # Call the decorated function
    example_function(string1, string2)